home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #1 / Amiga Plus CD - 2000 - No. 1.iso / Tools / Dev / mamesrc / src / amiga / inputs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-03  |  3.6 KB  |  158 lines

  1. #ifndef INPUTS_H
  2. #define INPUTS_H
  3. /**************************************************************************
  4.  *
  5.  * Copyright (C) 1999 Mats Eirik Hansen (mats.hansen@triumph.no)
  6.  *
  7.  * $Id: inputs.h,v 1.1 1999/04/28 18:56:13 meh Exp meh $
  8.  *
  9.  * $Log: inputs.h,v $
  10.  * Revision 1.1  1999/04/28 18:56:13  meh
  11.  * Initial revision
  12.  *
  13.  *
  14.  *************************************************************************/
  15.  
  16. #include <macros.h>
  17.  
  18. #define IKEY_RAW    0x1000
  19. #define IKEY_RAWMASK  0x7f
  20. #define IKEY_NONE   0x2000
  21.  
  22. #define IKEY_TAB       (IKEY_RAW|0x42)
  23. #define IKEY_CONTROL   (IKEY_RAW|0x63)
  24. #define IKEY_LALT      (IKEY_RAW|0x64)
  25. #define IKEY_RALT      (IKEY_RAW|0x65)
  26. #define IKEY_UP        (IKEY_RAW|0x4c)
  27. #define IKEY_DOWN      (IKEY_RAW|0x4d)
  28. #define IKEY_LEFT      (IKEY_RAW|0x4f)
  29. #define IKEY_RIGHT     (IKEY_RAW|0x4e)
  30. #define IKEY_1         (IKEY_RAW|0x01)
  31. #define IKEY_2         (IKEY_RAW|0x02)
  32. #define IKEY_3         (IKEY_RAW|0x03)
  33. #define IKEY_P         (IKEY_RAW|0x19)
  34. #define IKEY_F1        (IKEY_RAW|0x50)
  35. #define IKEY_F2        (IKEY_RAW|0x51)
  36. #define IKEY_F3        (IKEY_RAW|0x52)
  37. #define IKEY_F4        (IKEY_RAW|0x53)
  38. #define IKEY_F5        (IKEY_RAW|0x54)
  39. #define IKEY_F6        (IKEY_RAW|0x55)
  40. #define IKEY_F7        (IKEY_RAW|0x56)
  41. #define IKEY_F8        (IKEY_RAW|0x57)
  42. #define IKEY_F9        (IKEY_RAW|0x58)
  43. #define IKEY_F10       (IKEY_RAW|0x59)
  44. #define IKEY_ESC       (IKEY_RAW|0x45)
  45. #define IKEY_BACKSPACE (IKEY_RAW|0x41)
  46. #define IKEY_ENTER     (IKEY_RAW|0x44)
  47. #define IKEY_LSHIFT    (IKEY_RAW|0x60)
  48. #define IKEY_RSHIFT    (IKEY_RAW|0x61)
  49. #define IKEY_CAPSLOCK  (IKEY_RAW|0x62)
  50. #define IKEY_MINUS_PAD (IKEY_RAW|0x4a)
  51. #define IKEY_5_PAD     (IKEY_RAW|0x2e)
  52. #define IKEY_PLUS_PAD  (IKEY_RAW|0x5e)
  53. #define IKEY_DEL       (IKEY_RAW|0x46)
  54.  
  55. struct IKeyMap
  56. {
  57.   ULONG Code;
  58.   ULONG Key;
  59. };
  60.  
  61. struct IPort
  62. {
  63.   LONG Type;
  64.  
  65.   BYTE Red;
  66.   BYTE Blue;
  67.   BYTE Green;
  68.   BYTE Yellow;
  69.   BYTE Forward;
  70.   BYTE Reverse;
  71.   BYTE Play;
  72.  
  73.   union
  74.   {
  75.     struct
  76.     {
  77.       BYTE  Left;
  78.       BYTE  Right;
  79.       BYTE  Up;
  80.       BYTE  Down;
  81.     } Joystick;
  82.     struct
  83.     {
  84.       LONG  PrevX;
  85.       LONG  PrevY;
  86.       LONG  MouseX;
  87.       LONG  MouseY;
  88.     } Mouse;
  89.   } Move;
  90.  
  91. #ifdef INPUTS_PRIVATE
  92.   LONG  RealRed;
  93.  
  94.   ULONG AutoFireTime;
  95.   ULONG BlueEmuTime;
  96.  
  97.   struct MsgPort *MsgPort;
  98.  
  99.   struct IOStdReq    *PortRequest;
  100.   struct timerequest *TimerRequest;
  101.  
  102.   LONG PortRequestActive;
  103.   LONG TimerRequestActive;
  104.  
  105.   struct InputEvent InputEvent;
  106.  
  107.   struct GamePortTrigger OldTrigger;
  108.   UBYTE OldType;
  109.  
  110.   BYTE Enabled;
  111. #endif
  112. };
  113.  
  114. struct Inputs
  115. {
  116.   ULONG        SignalMask;
  117.   struct IPort *Ports[2];
  118.   BYTE         *Keys;
  119.  
  120. #ifdef INPUTS_PRIVATE
  121.   struct Library  *LowLevelBase;
  122.   struct Window   *Window;
  123.   struct Hook     *RefreshHook;
  124.   struct Hook     *MenuHook;
  125.   struct Hook     *IDCMPHook;
  126.   UBYTE           RawKeys[128];
  127.   struct IOStdReq InputRequest;
  128.  
  129.   BYTE      Enabled;
  130. #endif
  131. };
  132.  
  133. #define IPT_NONE     0
  134. #define IPT_JOYSTICK 1
  135. #define IPT_JOYPAD   2
  136. #define IPT_MOUSE    3
  137.  
  138. #define IA_Port1          (TAG_USER)
  139. #define IA_Port2          (TAG_USER+1)
  140. #define IA_KeyMap         (TAG_USER+2)
  141. #define IA_P1AutoFireRate (TAG_USER+3)
  142. #define IA_P2AutoFireRate (TAG_USER+4)
  143. #define IA_P1BlueEmuTime  (TAG_USER+5)
  144. #define IA_P2BlueEmuTime  (TAG_USER+6)
  145. #define IA_Window         (TAG_USER+7)
  146. #define IA_RefreshHook    (TAG_USER+8)
  147. #define IA_MenuHook       (TAG_USER+9)
  148. #define IA_UseTicks       (TAG_USER+10)
  149. #define IA_IDCMPHook      (TAG_USER+11)
  150.  
  151. struct Inputs *AllocInputs(Tag tags,...);
  152. void FreeInputs(struct Inputs *inputs);
  153. void IEnable(struct Inputs *inputs);
  154. void IDisable(struct Inputs *inputs);
  155. void IUpdate(struct Inputs *inputs);
  156.  
  157. #endif
  158.